﻿goog.provide('imc.ui.CatTipoPedimento');

imc.ui.CatTipoPedimento = function (opt) { //Constructor
    //attributes privados
    var dataGrid;

    /*\\Behavior : --------------------------------- */
    //Todos los ids van con #
    this.opt = {
        idDivContent: "#der"
        , idDivNav: "#izq"
        , idTableDataTable: "#tblCat"
    };

    $().extend(this.opt, opt);
    //alert(this.opt.test);
    this.draw();
    /*//Behavior : --------------------------------- */
} //Fin constructor

//Atributos Público************************************************
imc.ui.CatTipoPedimento.prototype.oTable = null;
imc.ui.CatTipoPedimento.prototype.opt = null;

//Metodos Públicos*************************************************
imc.ui.CatTipoPedimento.prototype.draw = function () {
    $(this.opt.idDivNav).load('catalogos.html #navigationPanelCat', function () { });
    this.loadContent();
};

imc.ui.CatTipoPedimento.prototype.loadContent = function () {
    var that = this;
    $(this.opt.idDivContent).load('catalogos.html #catContent', function () {
        that.catTipoPedimentoDataTable();
    });
};

imc.ui.CatTipoPedimento.prototype.catTipoPedimentoDataTable = function () {
    var that = this;
    $.ajax({
        url: "Services/CAT.svc/GetDataTipoPedimento"
        ,type: "POST"
        ,dataType: "json"
        ,data: '{}'
        ,contentType: "application/json; charset=utf-8"
        ,success: function (data) {
            oTable = $('#tblCat').dataTable({
                'bInfo': false
                ,'bPaginate': false
                ,'bLengthChange': false
                ,'bRetrieve': true, 'sDom': ''
                ,'sInfoEmpty': ''
                ,'bAutoWidth': false
                ,aaData: data.GetDataTipoPedimentoResult
                ,aoColumns: [
                    {
                        "aTargets": [0]
                        ,"fnRender": function (oObj) {
                            return '<input type="checkbox" id="readonly" imc-data="' + oObj.aData["ID_TIPO_PEDIMENTO"] + '" value="' + oObj.aData[0] + '" name="check" />';
                        }
                        ,"sClass": "checkboxId"
                        ,"bSearchable": false
                        ,"bSortable": false
                        ,"mDataProp": "check"
                        ,"sWidth": "4%"
                    }
                    ,{ "sTitle": "Tipo Pedimento", "mDataProp": "TIPO_PEDIMENTO", "sClass": "editarCat","sWidth": "31%" }
                    ,{ "sTitle": "Clave", "mDataProp": "CLAVE", "sClass": "editarCat","sWidth": "25%" }
                    ,{ "sTitle": "Régimen", "mDataProp": "REGIMEN", "sClass": "editarCat", "sWidth": "25%" }
                    ,{ "sTitle": "Nota", "mDataProp": "NOTA"
                        ,"fnRender": function (oObj) {
                            if(oObj.aData["NOTA"].length >= 20){
                                return  oObj.aData["NOTA"] +'...';
                            }
                            else{
                                return  oObj.aData["NOTA"] + '';
                            }
                        }
                    ,"sClass": "editarCat NOTA", "sWidth": "15%" }
                ]
            });
            $('#tblCat tbody .editarCat').die('click');
            $('#tblCat tbody .editarCat').live('click', function () {
                var oTable = $('#tblCat').dataTable();
                var sDataCat = oTable.fnGetData($(this).parent().get(0));
                console.log(sDataCat);
                for (var i in sDataCat) {
                    if (i = 'ID_TIPO_PEDIMENTO') {
                        idCat = sDataCat[i];
                    }
                }
                var dlg = that.dlgUpdateTipoPedimento(idCat);
                dlg.setVisible(true);
                //Recuperar campos para modificar
                $.ajax({
                    type: "POST"
                    ,url: "Services/Cat.svc/GetOneTipoPedimento"
                    ,data: '{"ID_TIPO_PEDIMENTO":' + idCat + '}'
                    ,contentType: "application/json; charset=utf-8"
                    ,dataType: "json"
                    ,success: function (data) {
                        if (data.GetOneTipoPedimentoResult != null) {
                            /*\\Object CharCounter : ------------------------*/
                            var userCharCounter = new imc.CharCounter({columnName:"TIPO_PEDIMENTO"});
                            /*//Object CharCounter : ------------------------*/
                            document.getElementById('TIPO_PEDIMENTO').value = data.GetOneTipoPedimentoResult["TIPO_PEDIMENTO"];
                            document.getElementById('CLAVE').value = data.GetOneTipoPedimentoResult["CLAVE"];
                            document.getElementById('REGIMEN').value = data.GetOneTipoPedimentoResult["REGIMEN"];
                            document.getElementById('NOTA').value = data.GetOneTipoPedimentoResult["NOTA"];
                        } else {
                            alert('Los datos vienen vacios ({"GetOneTipoPedimentoResult":null})');
                        }
                    }
                    ,error: function (result) {
                        alert('Error al recuperar Tipo de Pedimento ' + result.status + ' ' + result.statusText);
                    }
                });
            });
            $('.newCat').die('click');
            $('.newCat').live('click', function () {
                var dlg = that.dlgNewCatTipoPedimento();
                dlg.setVisible(true);
                /*\\Object CharCounter : ------------------------*/
                var userCharCounter = new imc.CharCounter({columnName:"TIPO_PEDIMENTO"});
                /*//Object CharCounter : ------------------------*/
            });
            $('.deleteCat').die('click');
            $('.deleteCat').live('click', function () {
                var oTable = $('#tblCat').dataTable();
                var stringDeleteCat = "";
                $('input[type="checkbox"]:checked', oTable.fnGetNodes()).each(function (i) {
                    stringDeleteCat += $(this).attr("imc-data") + ",";
                });
                if (stringDeleteCat != "") {
                    stringDeleteCat = stringDeleteCat.substring(0, stringDeleteCat.length - 1);
                }
                if (stringDeleteCat != "") {
                    var dlg = that.dlgDeleteCatTipoPedimento(stringDeleteCat);
                    dlg.setVisible(true);
                } else {
                    alert('No hay ningún Tipo Pedimento');
                    return true;
                }
            });
        }
        ,error: function (result) {
            alert('Error al obtener Tipo Pedimento ' + result.status + ' ' + result.statusText);
        }
    });
}

imc.ui.CatTipoPedimento.prototype.reloadCatTipoPedimentoDataTable = function () { //Recargar tabla al agregar, modificar o eliminar Tipo Pedimento
    var that = this;
    $.ajax({
        type: "POST"
        ,url: "Services/CAT.svc/GetDataTipoPedimento"
        ,data: '{}'
        ,contentType: "application/json; charset=utf-8"
        ,dataType: "json"
        ,success: function (data) {
            if (data.GetDataTipoPedimentoResult != null) {
                var ot = $("#tblCat").dataTable();
                ot.fnClearTable();
                ot.fnAddData(data.GetDataTipoPedimentoResult);
            } else {
                that.loadContent();
            }
        }
        ,error: function (result) {
            alert('Error al recargar la tabla de Tipo Pedimento ' + result.status + ' ' + result.statusText);
        }
    });
}; //Fin recargar tabla al agregar, modificar o eliminar Tipo Pedimento

imc.ui.CatTipoPedimento.prototype.dlgNewCatTipoPedimento = function () { //Dialog agregar Tipo Pedimento
    var that = this;
    this.dialogAgregarCat = new goog.ui.Dialog();
    this.dialogAgregarCat.setContent(
        '<div style="font-size: 85%;">'
            +'<div class="validateCat"><label class="validarCat"></label></div><br/>'
            +'<div><div style="width:150px; float:left;"><label style="float:right;">Tipo Pedimento: </label></div><div style="width:450px; float:left;"><input type="text" id="TIPO_PEDIMENTO" style="width: 250px;" /></div></div><br /><br />'
            +'<div><div style="width:150px; float:left;"><label style="float:right;">Clave: </label></div><div style="width:450px; float:left;"><input type="text" id="CLAVE" style="width: 250px;" /></div></div><br /><br />'
            +'<div><div style="width:150px; float:left;"><label style="float:right;">Régimen: </label></div><div style="width:450px; float:left;"><input type="text" id="REGIMEN" style="width: 250px;" /></div></div><br /><br />'
            +'<div xmlns="http://www.w3.org/1999/html"><div style="width:150px; float:left;"><label style="float:right;">Nota: </label></div><div style="width:450px; float:left;"><textarea id="NOTA" rows="5" cols="29"></textarea></div></div></div><br /><br />'
    );
    var titleNewCat = goog.dom.createDom("p", { style: 'margin:0;padding:0;color:black;font-size:80%;' }, 'Agregar Tipo Pedimento');
    this.dialogAgregarCat.setTitle(titleNewCat);
    var btnNewCat = new goog.ui.Dialog.ButtonSet();
    btnNewCat.addButton({ caption: "Agregar", key: "e" }).addButton({ caption: "Cancelar", key: "o" });
    this.dialogAgregarCat.setButtonSet(btnNewCat);
    this.dialogAgregarCat.setDisposeOnHide(true);
    goog.events.listen(this.dialogAgregarCat, goog.ui.Dialog.EventType.SELECT, function (e) {
        if (e.key == "o") {
            return true;
        } else {
            var val1 = $("#TIPO_PEDIMENTO").val();
            var val2 = $("#CLAVE").val();
            var val3 = $("#REGIMEN").val();
            var val4 = $("#NOTA").val();
            if (val1 == "" & val2 == "" & val3 == "") {
                $("#TIPO_PEDIMENTO").removeClass('campoSinError').addClass('campoConError');
                $("#CLAVE").removeClass('campoSinError').addClass('campoConError');
                $("#REGIMEN").removeClass('campoSinError').addClass('campoConError');
                $('.validarCat').html('Todos los campos son requeridos a acepción de Nota ');
                return false;
            }
            else if(val1 != "" & val2 == "" & val3 == ""){
                $("#TIPO_PEDIMENTO").removeClass('campoConError').addClass('campoSinError');
                $("#CLAVE").removeClass('campoSinError').addClass('campoConError');
                $("#REGIMEN").removeClass('campoSinError').addClass('campoConError');;
                $('.validarCat').html('Ingrese la Clave y el Régimen ');
                return false;
            }
            else if(val1 != "" & val2 != "" & val3 == ""){
                $("#TIPO_PEDIMENTO").removeClass('campoConError').addClass('campoSinError');
                $("#CLAVE").removeClass('campoConError').addClass('campoSinError');
                $("#REGIMEN").removeClass('campoSinError').addClass('campoConError');;
                $('.validarCat').html('Ingrese el Rérgimen ');
                return false;
            }
            else if(val1 == "" & val2 != "" & val3 == ""){
                $("#TIPO_PEDIMENTO").removeClass('campoSinError').addClass('campoConError');
                $("#CLAVE").removeClass('campoConError').addClass('campoSinError');
                $("#REGIMEN").removeClass('campoSinError').addClass('campoConError');
                $('.validarCat').html('Ingrese el Tipo Pedimento y el Régimen ');
                return false;
            }
            else if(val1 == "" & val2 != "" & val3 != ""){
                $("#TIPO_PEDIMENTO").removeClass('campoSinError').addClass('campoConError');
                $("#CLAVE").removeClass('campoConError').addClass('campoSinError');
                $("#REGIMEN").removeClass('campoConError').addClass('campoSinError');
                $('.validarCat').html('Ingrese el Tipo Pedimento');
                return false;
            }
            else if(val1 == "" & val2 == "" & val3 != ""){
                $("#TIPO_PEDIMENTO").removeClass('campoSinError').addClass('campoConError');
                $("#CLAVE").removeClass('campoSinError').addClass('campoConError');
                $("#REGIMEN").removeClass('campoConError').addClass('campoSinError');
                $('.validarCat').html('Ingrese el Tipo Pedimento y la Clave ');
                return false;
            } else {
                $.ajax({
                    url: "Services/CAT.svc/InsertTipoPedimento"
                    ,type: "POST"
                    ,data: '{"TIPO_PEDIMENTO":"' + val1 + '","CLAVE":"' + val2 + '","REGIMEN":"' + val3 + '","NOTA":"' + val4 + '"}'
                    ,contentType: "application/json; charset=utf-8"
                    ,dataType: "json"
                    ,success: function (data) {
                        var test = "";
                        test = data.InsertTipoPedimentoResult.state;
                        console.log('state: '+test);
                        if(!test){
                            $('.validarCat').html('Ya existe una Tipo Pedimento con este nombre');
                            return null;
                        } else {
                            that.reloadCatTipoPedimentoDataTable();
                            that.dialogAgregarCat.setVisible(false);
                        }
                    }
                    ,error: function (result) {
                        alert('Error al agregar Tipo Pedimento ' + result.status + ' ' + result.statusText);
                    }
                });
                return false;
            }
        }
    });
    return this.dialogAgregarCat;
};  //Fin dialog agregar Tipo Pedimento

imc.ui.CatTipoPedimento.prototype.dlgDeleteCatTipoPedimento = function (stringDeleteCat) { //Dialog Tipo Pedimento
    var that = this;
    this.dialogBorrarCat = new goog.ui.Dialog();
    this.dialogBorrarCat.setContent(
        '<div style="font-size: 85%;">'
            +'<label>¿Está seguro que desea eliminar los Tipo de Pedimento seleccionados?</label><br />'
        +'</div>'
    );
    this.dialogBorrarCat.setTitle('Borrar Tipo de Pedimento');
    var btnBorrarCat = new goog.ui.Dialog.ButtonSet();
    btnBorrarCat.addButton({ caption: "Borrar", key: "e" }).addButton({ caption: "Cancelar", key: "o" });
    this.dialogBorrarCat.setButtonSet(btnBorrarCat);
    this.dialogBorrarCat.setDisposeOnHide(true);
    goog.events.listen(this.dialogBorrarCat, goog.ui.Dialog.EventType.SELECT, function (e) {
        if (e.key == "o") {
            return true;
        } else {
            console.log(stringDeleteCat);
            $.ajax({
                url: "Services/CAT.svc/DeleteTipoPedimento",
                type: "POST",
                dataType: "json",
                data: '{"ID_TIPO_PEDIMENTO": "' + stringDeleteCat + '" }',
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    if (data) {
                        that.reloadCatTipoPedimentoDataTable();
                        return true;
                    }
                },
                error: function (result) {
                    alert('Error al borrar Tipo de Pedimento ' + result.status + ' ' + result.statusText);
                }
            });
        }
    });
    return this.dialogBorrarCat;
}   //Fin dialog borrar Tipo Pedimento

imc.ui.CatTipoPedimento.prototype.dlgUpdateTipoPedimento = function (idCat) { //Dialog modificar Tipo Pedimento
    var that = this;
    this.dialogModificarCat = new goog.ui.Dialog();
    this.dialogModificarCat.setContent(
        '<div style="font-size: 85%;">'
            +'<div class="validateCat"><label class="validarCat"></label></div><br/>'
            +'<div><div style="width:150px; float:left;"><label style="float:right;">Tipo Pedimento: </label></div><div style="width:450px; float:left;"><input type="text" id="TIPO_PEDIMENTO" style="width: 250px;" /></div></div><br /><br />'
            +'<div><div style="width:150px; float:left;"><label style="float:right;">Clave: </label></div><div style="width:450px; float:left;"><input type="text" id="CLAVE" style="width: 250px;" /></div></div><br /><br />'
            +'<div><div style="width:150px; float:left;"><label style="float:right;">Régimen: </label></div><div style="width:450px; float:left;"><input type="text" id="REGIMEN" style="width: 250px;" /></div></div><br /><br />'
            +'<div><div style="width:150px; float:left;"><label style="float:right;">Nota: </label></div><div style="width:450px;; float:left;"><textarea id="NOTA" rows="5" cols="29"></textarea></div></div></div><br /><br />'
    );
    var titleModificarCat = goog.dom.createDom("p", { style: 'margin:0;padding:0;color:black;font-size:80%;' }, 'Modificar Tipo de Pedimento');
    this.dialogModificarCat.setTitle(titleModificarCat);
    var btnModificarCat = new goog.ui.Dialog.ButtonSet();
    btnModificarCat.addButton({ caption: "Guardar cambios", key: "e" }).addButton({ caption: "Cancelar", key: "o" });
    this.dialogModificarCat.setButtonSet(btnModificarCat);
    this.dialogModificarCat.setDisposeOnHide(true);
    goog.events.listen(this.dialogModificarCat, goog.ui.Dialog.EventType.SELECT, function (e) {
        //alert(e.key);
        if (e.key == "o") {
            return true;
        } else {
            var val1 = $("#TIPO_PEDIMENTO").val();
            var val2 = $("#CLAVE").val();
            var val3 = $("#REGIMEN").val();
            var val4 = $("#NOTA").val();
            if (val1 == "" & val2 == "" & val3 == "") {
                $("#TIPO_PEDIMENTO").removeClass('campoSinError').addClass('campoConError');
                $("#CLAVE").removeClass('campoSinError').addClass('campoConError');
                $("#REGIMEN").removeClass('campoSinError').addClass('campoConError');
                $('.validarCat').html('Todos los campos son requeridos a acepción de Nota ');
                return false;
            }
            else if(val1 != "" & val2 == "" & val3 == ""){
                $("#TIPO_PEDIMENTO").removeClass('campoConError').addClass('campoSinError');
                $("#CLAVE").removeClass('campoSinError').addClass('campoConError');
                $("#REGIMEN").removeClass('campoSinError').addClass('campoConError');;
                $('.validarCat').html('Ingrese la Clave y el Régimen ');
                return false;
            }
            else if(val1 != "" & val2 != "" & val3 == ""){
                $("#TIPO_PEDIMENTO").removeClass('campoConError').addClass('campoSinError');
                $("#CLAVE").removeClass('campoConError').addClass('campoSinError');
                $("#REGIMEN").removeClass('campoSinError').addClass('campoConError');;
                $('.validarCat').html('Ingrese el Rérgimen ');
                return false;
            }
            else if(val1 == "" & val2 != "" & val3 == ""){
                $("#TIPO_PEDIMENTO").removeClass('campoSinError').addClass('campoConError');
                $("#CLAVE").removeClass('campoConError').addClass('campoSinError');
                $("#REGIMEN").removeClass('campoSinError').addClass('campoConError');
                $('.validarCat').html('Ingrese el Tipo Pedimento y el Régimen ');
                return false;
            }
            else if(val1 == "" & val2 != "" & val3 != ""){
                $("#TIPO_PEDIMENTO").removeClass('campoSinError').addClass('campoConError');
                $("#CLAVE").removeClass('campoConError').addClass('campoSinError');
                $("#REGIMEN").removeClass('campoConError').addClass('campoSinError');
                $('.validarCat').html('Ingrese el Tipo Pedimento');
                return false;
            }
            else if(val1 == "" & val2 == "" & val3 != ""){
                $("#TIPO_PEDIMENTO").removeClass('campoSinError').addClass('campoConError');
                $("#CLAVE").removeClass('campoSinError').addClass('campoConError');
                $("#REGIMEN").removeClass('campoConError').addClass('campoSinError');
                $('.validarCat').html('Ingrese el Tipo Pedimento y la Clave ');
                return false;
            } else {
                $.ajax({
                    url: "Services/Cat.svc/UpdateTipoPedimento"
                    ,type: "POST"
                    ,data: '{"ID_TIPO_PEDIMENTO":' + idCat + ',"TIPO_PEDIMENTO":"' + val1 + '","CLAVE":"' + val2 + '","REGIMEN":"' + val3 + '","NOTA":"' + val4 + '"}'
                    ,contentType: "application/json; charset=utf-8"
                    ,dataType: "json"
                    ,success: function (data) {
                        that.reloadCatTipoPedimentoDataTable();
                        return true;
                    }
                    ,error: function (result) {
                        alert('Error al modificar Tipo de Pedimento ' + result.status + ' ' + result.statusText);
                    }
                });
            }
        }
    });
    return this.dialogModificarCat;
} //Fin dialog modificar TipoPedimento